/*
    定义日志信息类，进行日志中间信息的存储：
        1. 日志的输出时间
        2. 日志等级
        3. 源文件名称
        4. 源文件行号
        5. 线程id
        6. 日志主体信息
        7. 日志器名称
*/
#pragma once
#include <iostream>
#include <string>
#include <thread>
#include "level.hpp"
#include "util.hpp"

namespace superlog{
    struct LogMsg{
        time_t _ctime;              // 日志产生时间戳
        LogLevel::value _level;     // 日志等级
        size_t _line;          // 行号 
        std::thread::id _tid;    // 线程id
        std::string _file;         // 源文件名称
        std::string _logger;       // 日志器名称
        std::string _payload;      // 日志主体信息

        LogMsg(LogLevel::value level, 
            size_t line,
            const std::string &file,
            const std::string &logger,
            const std::string &msg):
            _ctime(superlog::util::Date::now()),
            _tid(std::this_thread::get_id()),
            _level(level),
            _line(line),
            _file(file),
            _logger(logger),
            _payload(msg){}
    };
} // namespace superlog
